//app.js
var that;
var sessionKey;

App({

  // http: "https://lianhuiyi.woneast.com/lhy/v0.1/api/",//线上数据

  http: "http://47.92.227.226:8081/hys/v0.1/api/",   //测试外网

  // http: "http://47.92.227.226:8193/lhy/v0.1/api/",    //正式环境的测试地址

  // http: "http://192.168.1.161:8080/v0.1/api/",          //本地（学中）

  // http: "http://192.168.1.177:8080/v0.1/api/",        //本地 （亚男）http://wangyanan.natapp1.cc/v0.1/api/

  // http: "http://47.92.227.226:8191/v0.1/api/",        //本地 （亚男）

  // http: "http://192.168.1.176:80/v0.1/api/",    //调试

  // http: "http://47.92.227.226:8191/v0.1/api/",    //小程序专属测试

  // http: "http://47.92.227.226:8193/lhy/v0.1/api/",    //正式环境的测试服务器


  ws: "wss://lianhuiyi.woneast.com/lhy/v0.1/api/",     //线上数据

  // ws: "ws://47.92.227.226:8081/lhy/v0.1/api/",        //测试外网

  // ws: "ws://192.168.1.152:8080/v0.1/api/",           //本地（学中）


  appid: "wxbbbb12526d5add0d",

  // userId: 2C9A00CD6B4FBAA9016B4FBAA9810000

  baiduMapAK: "RTZDGq8a6Nfv61RrzDF6kL3gmcPxBYYi",
  serviceWX: "3QgXcuKqewF6ukxIcQLurVmRfj1Yxuaz",

  //视频截帧
  imgSnapshot: "?x-oss-process=video/snapshot,t_1000,f_jpg,w_0,h_0,m_fast",


  onLaunch: function (options) {
    that = this;

    wx.checkSession({
      success: function () {
        console.log("//session_key 未过期，并且在本生命周期一直有效")
        // 获取用户登录信息缓存
        wx.getStorage({
          key: 'loginUserObj',
          success: function (res) {
            if (res.data && res.data != "" && res.data != null) {
              // console.log('userObj缓存',res)
              that.globalData.loginUserObj = res.data;
            }
            wx.getStorage({
              key: 'tokenMap',
              success: function (res) {
                that.globalData.tokenMap = res.data;

                that.globalData.checkLogin = true;
                //由于这里是网络请求，可能会在 Page.onLoad 之后才返回
                // 所以此处加入 callback 以防止这种情况
                if (that.checkLoginReadyCallback) {
                  that.checkLoginReadyCallback(res);
                }
              },
              fail: function () {
                that.initUser();
              }
            })
            // 获取查询用户返回的信息缓存
            wx.getStorage({
              key: 'userObj',
              success: function (res) {
                if (res.data && res.data != "" && res.data != null) {
                  that.globalData.userObj = res.data;
                }
              }
            })
            // 获取code缓存
            wx.getStorage({
              key: 'codeData',
              success: function (res) {
                that.globalData.codeData = res.data;
              },
            })
            // 获取userInfo缓存
            wx.getStorage({
              key: 'userInfo',
              success: function (res) {
                that.globalData.userInfo = res.data;
              },
            })

          },
          fail: function (err) {
            console.log("loginUserObj缓存获取不到")
            // 登录初始化
            that.initUser();
          }
        })
      },
      fail: function () {
        console.log("session_key 已经失效，需要重新执行登录流程")
        // 初始化微信登录
        that.initUser();
      }
    })

  },

  onShow: function (showOptions) {
    // console.log("showOptions", showOptions)
  },

  // 登录初始化
  initUser: function () {
    wx.login({
      success: res => {
        console.log("获取code", res)
        // 发送 res.code 到后台换取 openId, sessionKey, unionId
        wx.request({
          url: that.http + 'wechat/wechatletLogin?code=' + res.code + '&type=2',
          data: {},
          method: 'GET',
          header: {
            'content-type': 'application/json' // 默认值
          },
          success: function (res) {
            console.log("codesuc返回", res)
            that.globalData.codeData = res.data.data;
            wx.setStorage({
              key: 'codeData',
              data: res.data.data,
            })
            // 查询该用户是否为注册用户
            that.queryUserFun();
          },
          fail: function (err) {
            console.log("code fail返回", err)
            that.globalData.checkLogin = true;
            //由于这里是网络请求，可能会在 Page.onLoad 之后才返回
            // 所以此处加入 callback 以防止这种情况
            if (that.checkLoginReadyCallback) {
              that.checkLoginReadyCallback(res);
            }
          }
        })

      }
    })
  },

  // 查询该用户是否为注册用户
  queryUserFun: function () {
    wx.request({
      url: that.http + 'user/selectUserInfoByUnionId?unionId=' + that.globalData.codeData.unionid,
      data: {},
      method: 'GET',
      header: {
        'content-type': 'application/json' // 默认值
      },
      success: function (res) {
        console.log("查询用户是否为注册用户suc返回", res.data)
        if (res.data.code == 200) {   //该用户为注册用户
          wx.setStorage({
            key: 'userObj',
            data: res.data.data,
          })
          that.globalData.userObj = res.data.data;
          // 直接登录
          that.wxLoginFun();

          // that.globalData.checkLogin = true;  //测试（非登录）
          // if (that.checkLoginReadyCallback) {
          //   that.checkLoginReadyCallback(res);
          // }

        } else if (res.data.code == 201) { //该用户未微信注册过
          console.log("该用户未微信注册过")
          that.globalData.checkLogin = true;
          //由于这里是网络请求，可能会在 Page.onLoad 之后才返回
          // 所以此处加入 callback 以防止这种情况
          if (that.checkLoginReadyCallback) {
            that.checkLoginReadyCallback(res);
          }
        } else {
          console.log("登录其他情况")
          that.globalData.checkLogin = true;
          //由于这里是网络请求，可能会在 Page.onLoad 之后才返回
          // 所以此处加入 callback 以防止这种情况
          if (that.checkLoginReadyCallback) {
            that.checkLoginReadyCallback(res);
          }
        }
      },
      fail: function (err) {
        console.log("查询用户fail返回", err)
        that.globalData.checkLogin = true;
        if (that.checkLoginReadyCallback) {
          that.checkLoginReadyCallback(res);
        }
      }
    })
  },

  // 是注册用户-直接登录
  wxLoginFun: function () {

    var postData = {
      wxOpenid: that.globalData.codeData.openid,
      wxUnionid: that.globalData.codeData.unionid,
      mobile: that.globalData.userObj.mobile,
      wxNickname: that.globalData.userObj.wxNickname,
      wxHeadimgurl: that.globalData.userObj.mainPic,
    }

    wx.request({
      url: that.http + 'user/wloginletPlusHys',
      data: postData,
      method: 'POST',
      header: {
        'content-type': 'application/json' // 默认值
      },
      success: function (res) {
        console.log("用户登录suc返回", res)
        if (res.data.code == 200) {
          wx.setStorage({
            key: 'tokenMap',
            data: res.data.data.tokenMap,
          })
          wx.setStorage({
            key: 'loginUserObj',
            data: res.data.data.user,
          })
          that.globalData.tokenMap = res.data.data.tokenMap;
          that.globalData.loginUserObj = res.data.data.user;

          var userInfo = {
            nickName: res.data.data.user.name,
            avatarUrl: res.data.data.user.mainPic,
          }
          that.globalData.userInfo = userInfo;
          wx.setStorage({
            key: 'userInfo',
            data: userInfo,
          })

          that.globalData.checkLogin = true;
          //由于这里是网络请求，可能会在 Page.onLoad 之后才返回
          // 所以此处加入 callback 以防止这种情况
          if (that.checkLoginReadyCallback) {
            that.checkLoginReadyCallback(res);
          }
        } else {
          that.globalData.checkLogin = true;
          if (that.checkLoginReadyCallback) {
            that.checkLoginReadyCallback(res);
          }
        }
      },
      fail: function (err) {
        console.log("查询用户fail返回", err)
        that.globalData.checkLogin = true;
        if (that.checkLoginReadyCallback) {
          that.checkLoginReadyCallback(res);
        }
      }
    })
  },

  globalData: {
    comeEnterpriseMdId: null,  //从其他小程序跳转过来的Id
    checkLogin: false,
    userInfo: null,
    codeData: null,    //openid和unionid
    userObj: null,   //查询返回的数据库存放的user信息
    loginUserObj: null,  //登录返回的数据库存放的user信息
    companyObj: null,  //组织机构信息（尽量不要用这个，刷新没有更新，建议用loginUserObj.ydCompany）
    tokenMap: {               //tooken
      access_token: "",
      access_token_timestr: "",
      refresh_token: "",
      refresh_token_timestr: "",
      sys_time_timestr: ""
    },
    cityObj: {       //城市
      centerLatitude: "",
      centerLongitude: "",
      name: "全国"
    },
    refreshCity: false,
    latitudeNow: null,   //当前纬度
    longitudeNow: null,  //当去经度
    shareOpenId: null,   //分享人的openid，用来判断是否发送好友报名成功消息提醒
    shareName: null,
  }

})